From: Adel Gadllah Date: Mon, 21 Mar 2011 22:20:36 +0000 (+0100) Subject: XDND: Allow workspace switching using the thumbnails X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~8559 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=528fc9bc4766dd40f61bf045e1af8b5e9b2e4b23;p=gnome-shell.git XDND: Allow workspace switching using the thumbnails Currently activating a window on a different workspace requires very long drag distances, which is very inconvenient to use. Fix that by allowing switching workspaces using the thumbnails which is consistent with window and launcher dnd and much easier to use. https://bugzilla.gnome.org/show_bug.cgi?id=643945 --- diff --git a/js/ui/overview.js b/js/ui/overview.js index 40cd85272..351ba7c58 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -24,6 +24,7 @@ const PlaceDisplay = imports.ui.placeDisplay; const Tweener = imports.ui.tweener; const ViewSelector = imports.ui.viewSelector; const WorkspacesView = imports.ui.workspacesView; +const WorkspaceThumbnail = imports.ui.workspaceThumbnail; // Time for initial animation going into Overview mode const ANIMATION_TIME = 0.25; @@ -243,7 +244,8 @@ Overview.prototype = { _onDragMotion: function(dragEvent) { let targetIsWindow = dragEvent.targetActor && dragEvent.targetActor._delegate && - dragEvent.targetActor._delegate.metaWindow; + dragEvent.targetActor._delegate.metaWindow && + !(dragEvent.targetActor._delegate instanceof WorkspaceThumbnail.WindowClone); this._windowSwitchTimestamp = global.get_current_time(); diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js index d6334c6b3..9d92f7b10 100644 --- a/js/ui/workspaceThumbnail.js +++ b/js/ui/workspaceThumbnail.js @@ -379,6 +379,11 @@ WorkspaceThumbnail.prototype = { // Draggable target interface handleDragOver : function(source, actor, x, y, time) { + if (source == Main.xdndHandler) { + this.metaWorkspace.activate(time); + return DND.DragMotionResult.CONTINUE; + } + if (this.state > ThumbnailState.NORMAL) return DND.DragMotionResult.CONTINUE; diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js index f7250c649..f791f9fb4 100644 --- a/js/ui/workspacesView.js +++ b/js/ui/workspacesView.js @@ -598,6 +598,14 @@ WorkspacesDisplay.prototype = { this._updateAlwaysZoom(); global.screen.connect('monitors-changed', Lang.bind(this, this._updateAlwaysZoom)); + Main.xdndHandler.connect('drag-begin', Lang.bind(this, function(){ + this._alwaysZoomOut = true; + })); + + Main.xdndHandler.connect('drag-end', Lang.bind(this, function(){ + this._alwaysZoomOut = false; + this._updateAlwaysZoom(); + })); this._nWorkspacesNotifyId = 0; this._switchWorkspaceNotifyId = 0;